SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


CREATE PROCEDURE [dbo].[LIQBonificacionXConduccion] 
@Agente INT,
@Servicio INT,
@Plaza INT,
@Resultado DECIMAL(18,4) OUTPUT,
@idLiquidacion INT,
@DiasALiquidar INT,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
 AS 

SET NOCOUNT ON
SET DATEFORMAT dmy

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 17/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
-- 09/07/2006 - Los parametros se obtienen de la funcion fnObtenerValorDeParametro con la fecha que corresponda.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DECLARE @TipoDefuncion INT
DECLARE @SueldoBasico DECIMAL(18,4)
DECLARE @BonificacionXConduccion DECIMAL(18,4)
DECLARE @Organizacion INT
DECLARE @horas INT
DECLARE @SituacionRevista INT
DECLARE @ComisionServicio INT
DECLARE @NroError INT
DECLARE @SubOrganizacion INT
DECLARE @CabeceraDeLiquidacion INT
DECLARE @PorcentajeDeConduccion DECIMAL(18,4)

SELECT @ComisionServicio = 0, @NroError = 0
--SELECT @PorcentajeDeConduccion = CONVERT(DECIMAL(18,4), Valor1) FROM tb_Parametros WHERE Parametro = '%BonificacionPorConduccion'

SELECT @PorcentajeDeConduccion = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('%BonificacionPorConduccion', @Hasta))


-- Actualizado 17/11/2005
--If Exists(SELECT * FROM tb_SubServiciosAgentes SS, tb_ServiciosAgentes S WHERE idServicioAgente = ServicioAgente and Agente = @Agente And
--	ServicioAgente = @Servicio And SS.Licencia In (101,100) And SS.FechaAlta <= @Desde AND ( (SS.FechaBaja IS NULL) OR (SS.FechaBaja IS NOT NULL AND SS.FechaBaja < @Hasta) ))  
--		SELECT @Comisionservicio = 1

-- Vemos si tiene una comision de servicio. Si tiene corresponde presentismo, se cambio el Where el 17/11/05
If Exists(SELECT * FROM tb_SubServiciosAgentes SS, tb_ServiciosAgentes S WHERE idServicioAgente = ServicioAgente and Agente = @Agente And
	ServicioAgente = @Servicio And SS.Licencia In (101,100) And SS.FechaAlta <= @Hasta AND ( (SS.FechaBaja IS NULL) OR (SS.FechaBaja IS NOT NULL AND SS.FechaBaja > @Desde) ))  
		SELECT @Comisionservicio = 1

SELECT @TipoDeFuncion = f.TipoDeFuncion, @Organizacion = Organizacion, @horas=p.horas, @SubOrganizacion = SubOrganizacion FROM tb_Funciones f, tb_Plazas p WHERE f.idfuncion = p.funcion and idPlaza = @Plaza
SELECT @SituacionRevista = situacionrevista FROM tb_ServiciosAgentes WHERE idServicioAgente = @Servicio

If (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion) Is Not Null
	SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion

if (@TipoDeFuncion = 17 Or @TipoDeFuncion = 18 Or @TipoDeFuncion = 19) Or (@ComisionServicio = 1) --Los que no NF
BEGIN
	SELECT @SueldoBasico = MontoHaberes FROM tb_RegistrodeLiquidaciones WHERE liquidacion = @idLiquidacion and servicio = @Servicio and concepto = 4
	SELECT @BonificacionXConduccion = (@SueldoBasico * @PorcentajeDeConduccion) / 100
	INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, DiasLiquidados, SubOrganizacion)
	VALUES (null, null, @Agente, null, 1, null, 8, null, null, null, null, null, null, @horas, 0, @idLiquidacion, 0, @BonificacionXConduccion, @Organizacion, null, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)
	
	SELECT @NroError = @@ERROR	

	IF @NroError <> 0
	BEGIN
		SELECT @CabeceraDeLiquidacion = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion

		INSERT INTO tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) VALUES
		(@Agente, 8, CONVERT(VARCHAR,@NroError), GETDATE(), @idLiquidacion, @Organizacion, @Servicio, @CabeceraDeLiquidacion, @NroError)
	END
END
GO
